home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / include / video / sisfb.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  8KB  |  210 lines

  1. /*
  2.  * sisfb.h - definitions for the SiS framebuffer driver
  3.  *
  4.  * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria.
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2 of the named License,
  9.  * or any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program; if not, write to the Free Software
  18.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
  19.  */
  20.  
  21. #ifndef _LINUX_SISFB_H_
  22. #define _LINUX_SISFB_H_
  23.  
  24. #include <linux/types.h>
  25. #include <asm/ioctl.h>
  26.  
  27. /**********************************************/
  28. /*                   PUBLIC                   */
  29. /**********************************************/
  30.  
  31. /* vbflags, public (others in sis.h) */
  32. #define CRT2_DEFAULT        0x00000001
  33. #define CRT2_LCD        0x00000002
  34. #define CRT2_TV            0x00000004
  35. #define CRT2_VGA        0x00000008
  36. #define TV_NTSC            0x00000010
  37. #define TV_PAL            0x00000020
  38. #define TV_HIVISION        0x00000040
  39. #define TV_YPBPR        0x00000080
  40. #define TV_AVIDEO        0x00000100
  41. #define TV_SVIDEO        0x00000200
  42. #define TV_SCART        0x00000400
  43. #define TV_PALM            0x00001000
  44. #define TV_PALN            0x00002000
  45. #define TV_NTSCJ        0x00001000
  46. #define TV_CHSCART        0x00008000
  47. #define TV_CHYPBPR525I        0x00010000
  48. #define CRT1_VGA        0x00000000
  49. #define CRT1_LCDA        0x00020000
  50. #define VGA2_CONNECTED          0x00040000
  51. #define VB_DISPTYPE_CRT1    0x00080000    /* CRT1 connected and used */
  52. #define VB_SINGLE_MODE        0x20000000    /* CRT1 or CRT2; determined by DISPTYPE_CRTx */
  53. #define VB_MIRROR_MODE        0x40000000    /* CRT1 + CRT2 identical (mirror mode) */
  54. #define VB_DUALVIEW_MODE    0x80000000    /* CRT1 + CRT2 independent (dual head mode) */
  55.  
  56. /* Aliases: */
  57. #define CRT2_ENABLE        (CRT2_LCD | CRT2_TV | CRT2_VGA)
  58. #define TV_STANDARD        (TV_NTSC | TV_PAL | TV_PALM | TV_PALN | TV_NTSCJ)
  59. #define TV_INTERFACE        (TV_AVIDEO|TV_SVIDEO|TV_SCART|TV_HIVISION|TV_YPBPR|TV_CHSCART|TV_CHYPBPR525I)
  60.  
  61. /* Only if TV_YPBPR is set: */
  62. #define TV_YPBPR525I        TV_NTSC
  63. #define TV_YPBPR525P        TV_PAL
  64. #define TV_YPBPR750P        TV_PALM
  65. #define TV_YPBPR1080I        TV_PALN
  66. #define TV_YPBPRALL         (TV_YPBPR525I | TV_YPBPR525P | TV_YPBPR750P | TV_YPBPR1080I)
  67.  
  68. #define VB_DISPTYPE_DISP2    CRT2_ENABLE
  69. #define VB_DISPTYPE_CRT2    CRT2_ENABLE
  70. #define VB_DISPTYPE_DISP1    VB_DISPTYPE_CRT1
  71. #define VB_DISPMODE_SINGLE    VB_SINGLE_MODE
  72. #define VB_DISPMODE_MIRROR    VB_MIRROR_MODE
  73. #define VB_DISPMODE_DUAL    VB_DUALVIEW_MODE
  74. #define VB_DISPLAY_MODE        (SINGLE_MODE | MIRROR_MODE | DUALVIEW_MODE)
  75.  
  76. /* Structure argument for SISFB_GET_INFO ioctl  */
  77. struct sisfb_info {
  78.     __u32    sisfb_id;        /* for identifying sisfb */
  79. #ifndef SISFB_ID
  80. #define SISFB_ID      0x53495346    /* Identify myself with 'SISF' */
  81. #endif
  82.     __u32   chip_id;        /* PCI-ID of detected chip */
  83.     __u32   memory;            /* total video memory in KB */
  84.     __u32   heapstart;        /* heap start offset in KB */
  85.     __u8    fbvidmode;        /* current sisfb mode */
  86.  
  87.     __u8    sisfb_version;
  88.     __u8    sisfb_revision;
  89.     __u8    sisfb_patchlevel;
  90.  
  91.     __u8    sisfb_caps;        /* sisfb capabilities */
  92.  
  93.     __u32    sisfb_tqlen;        /* turbo queue length (in KB) */
  94.  
  95.     __u32    sisfb_pcibus;        /* The card's PCI ID */
  96.     __u32    sisfb_pcislot;
  97.     __u32    sisfb_pcifunc;
  98.  
  99.     __u8    sisfb_lcdpdc;        /* PanelDelayCompensation */
  100.  
  101.     __u8    sisfb_lcda;        /* Detected status of LCDA for low res/text modes */
  102.  
  103.     __u32    sisfb_vbflags;
  104.     __u32    sisfb_currentvbflags;
  105.  
  106.     __u32    sisfb_scalelcd;
  107.     __u32    sisfb_specialtiming;
  108.  
  109.     __u8    sisfb_haveemi;
  110.     __u8    sisfb_emi30,sisfb_emi31,sisfb_emi32,sisfb_emi33;
  111.     __u8    sisfb_haveemilcd;
  112.  
  113.     __u8    sisfb_lcdpdca;        /* PanelDelayCompensation for LCD-via-CRT1 */
  114.  
  115.     __u16    sisfb_tvxpos, sisfb_tvypos;    /* Warning: Values + 32 ! */
  116.  
  117.     __u32    sisfb_heapsize;        /* heap size (in KB) */
  118.     __u32    sisfb_videooffset;    /* Offset of viewport in video memory (in bytes) */
  119.  
  120.     __u32    sisfb_curfstn;        /* currently running FSTN/DSTN mode */
  121.     __u32    sisfb_curdstn;
  122.  
  123.     __u16    sisfb_pci_vendor;    /* PCI vendor (SiS or XGI) */
  124.  
  125.     __u32    sisfb_vbflags2;        /* ivideo->vbflags2 */
  126.  
  127.     __u8    sisfb_can_post;        /* sisfb can POST this card */
  128.     __u8    sisfb_card_posted;    /* card is POSTED */
  129.     __u8    sisfb_was_boot_device;    /* This card was the boot video device (ie is primary) */
  130.  
  131.     __u8    reserved[183];        /* for future use */
  132. };
  133.  
  134. #define SISFB_CMD_GETVBFLAGS    0x55AA0001    /* no arg; result[1] = vbflags */
  135. #define SISFB_CMD_SWITCHCRT1    0x55AA0010    /* arg[0]: 99 = query, 0 = off, 1 = on */
  136. /* more to come */
  137.  
  138. #define SISFB_CMD_ERR_OK    0x80000000    /* command succeeded */
  139. #define SISFB_CMD_ERR_LOCKED    0x80000001    /* sisfb is locked */
  140. #define SISFB_CMD_ERR_EARLY    0x80000002    /* request before sisfb took over gfx system */
  141. #define SISFB_CMD_ERR_NOVB    0x80000003    /* No video bridge */
  142. #define SISFB_CMD_ERR_NOCRT2    0x80000004    /* can't change CRT1 status, CRT2 disabled */
  143. /* more to come */
  144. #define SISFB_CMD_ERR_UNKNOWN   0x8000ffff    /* Unknown command */
  145. #define SISFB_CMD_ERR_OTHER    0x80010000    /* Other error */
  146.  
  147. /* Argument for SISFB_CMD ioctl */
  148. struct sisfb_cmd {
  149.     __u32  sisfb_cmd;
  150.     __u32  sisfb_arg[16];
  151.     __u32  sisfb_result[4];
  152. };
  153.  
  154. /* Addtional IOCTLs for communication sisfb <> X driver                */
  155. /* If changing this, vgatypes.h must also be changed (for X driver)    */
  156.  
  157. /* ioctl for identifying and giving some info (esp. memory heap start) */
  158. #define SISFB_GET_INFO_SIZE    _IOR(0xF3,0x00,__u32)
  159. #define SISFB_GET_INFO        _IOR(0xF3,0x01,struct sisfb_info)
  160.  
  161. /* ioctrl to get current vertical retrace status */
  162. #define SISFB_GET_VBRSTATUS    _IOR(0xF3,0x02,__u32)
  163.  
  164. /* ioctl to enable/disable panning auto-maximize (like nomax parameter) */
  165. #define SISFB_GET_AUTOMAXIMIZE    _IOR(0xF3,0x03,__u32)
  166. #define SISFB_SET_AUTOMAXIMIZE    _IOW(0xF3,0x03,__u32)
  167.  
  168. /* ioctls to relocate TV output (x=D[31:16], y=D[15:0], + 32)*/
  169. #define SISFB_GET_TVPOSOFFSET    _IOR(0xF3,0x04,__u32)
  170. #define SISFB_SET_TVPOSOFFSET    _IOW(0xF3,0x04,__u32)
  171.  
  172. /* ioctl for internal sisfb commands (sisfbctrl) */
  173. #define SISFB_COMMAND        _IOWR(0xF3,0x05,struct sisfb_cmd)
  174.  
  175. /* ioctl for locking sisfb (no register access during lock) */
  176. /* As of now, only used to avoid register access during
  177.  * the ioctls listed above.
  178.  */
  179. #define SISFB_SET_LOCK        _IOW(0xF3,0x06,__u32)
  180.  
  181. /* ioctls 0xF3 up to 0x3F reserved for sisfb */
  182.  
  183. /****************************************************************/
  184. /* The following are deprecated and should not be used anymore: */
  185. /****************************************************************/
  186. /* ioctl for identifying and giving some info (esp. memory heap start) */
  187. #define SISFB_GET_INFO_OLD       _IOR('n',0xF8,__u32)
  188. /* ioctrl to get current vertical retrace status */
  189. #define SISFB_GET_VBRSTATUS_OLD       _IOR('n',0xF9,__u32)
  190. /* ioctl to enable/disable panning auto-maximize (like nomax parameter) */
  191. #define SISFB_GET_AUTOMAXIMIZE_OLD _IOR('n',0xFA,__u32)
  192. #define SISFB_SET_AUTOMAXIMIZE_OLD _IOW('n',0xFA,__u32)
  193. /****************************************************************/
  194. /*               End of deprecated ioctl numbers                */
  195. /****************************************************************/
  196.  
  197. /* For fb memory manager (FBIO_ALLOC, FBIO_FREE) */
  198. struct sis_memreq {
  199.     __u32    offset;
  200.     __u32    size;
  201. };
  202.  
  203. /**********************************************/
  204. /*                  PRIVATE                   */
  205. /*         (for IN-KERNEL usage only)         */
  206. /**********************************************/
  207.  
  208.  
  209. #endif
  210.